package com.yishan.thread;


import lombok.Data;

/**
 * 使用  synchronized  线程隔离  synchronized 失去了并发性 降低代码效率 以时间换空间
 * 只提供了一个变量 进行阻塞排队访问
 **/
@Data
public class ThreadLocalTest3 {

    private String data;

    public static void main(String[] args) {
        final ThreadLocalTest3 demo = new ThreadLocalTest3();

        for (int i = 0; i < 5; i++) {

            Thread thread = new Thread(new Runnable() {
                public void run() {
                    synchronized (ThreadLocalTest3.class) {
                        demo.setData(Thread.currentThread().getName() + "的数据");
                        System.out.println("---------------------------------");
                        System.out.println(Thread.currentThread().getName() + "------->" + demo.getData());
                    }
                }
            });
            thread.setName("线程" + i);
            thread.start();

        }
        //运行结果
        //---------------------------------
        //---------------------------------
        //线程2------->线程2的数据
        //---------------------------------
        //线程3------->线程3的数据
        //线程0------->线程0的数据
        //---------------------------------
        //线程4------->线程4的数据
        //线程1------->线程1的数据

    }

}
